﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SanFranciscoModel.Docente;
using SanFranciscoModel.Curso;
using SanFranciscoModel.Materia;
using SanFranciscoModel.Intermedias;
using System.Data.SqlClient;

namespace SanFrancisco
{
    public partial class AsignacionAlumnoCursoDocente : Form
    {
        List<Curso> ListCurso = new List<Curso>();
        List<Materia> ListMateria = new List<Materia>();
        List<Docente> ListDocente = new List<Docente>();

        public AsignacionAlumnoCursoDocente()
        {
            InitializeComponent();
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            if (cmbDocente.SelectedValue == null)
            {
                MessageBox.Show("Por favor seleccione un Docente");
            }
            else 
            {
                if (cmCurso.SelectedValue == null)
                {
                    MessageBox.Show("Por favor seleccione un Curso");
                }
                else 
                {
                    if (cmbMateria.SelectedValue == null)
                    {
                        MessageBox.Show("Por favor seleccione una Materia");
                    }
                    else
                        {
                            AlumnoXCursoManager AlumnoXCursoManager = new AlumnoXCursoManager();
                            if(AlumnoXCursoManager.ExisteCursoXMateriaXDocente((int)cmCurso.SelectedValue, (int)cmbMateria.SelectedValue, (int)cmbDocente.SelectedValue))
                            {
                                MessageBox.Show("No se puede realizar la accion porque ya se encuentra registrada dicha Asignacion!!!");
                            }
                        else
                            {
                                //guardo la asignacion en la db
                                AlumnoXCursoManager.guardarCursoXMateriaXDocente((int)cmCurso.SelectedValue, (int)cmbMateria.SelectedValue, (int)cmbDocente.SelectedValue);
                                MessageBox.Show("Asignación exitosa");
                                this.Close();
                            }
                                
                        }
                   }
           }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void AsignacionAlumnoCursoDocente_Load(object sender, EventArgs e)
        {
            CargarCursos();
        }

        

        private void CargarCursos()
        {
            CursoManager CursoManager = new CursoManager();

            ListCurso =  CursoManager.getCursoActual();

            DataTable dtable = new DataTable();
            dtable.Columns.Add("id", typeof(int));
            dtable.Columns.Add("Nombre", typeof(string));

            foreach (Curso curso in ListCurso)
            {
                DataRow drow = dtable.NewRow();
                drow["Nombre"] = "Id: " +curso.idCurso + " - Nombre: " + curso.NombreCurso;
                drow["id"] = curso.idCurso;
                dtable.Rows.Add(drow);
            }

            cmCurso.DisplayMember = "Nombre";
            cmCurso.ValueMember = "id";
            cmCurso.DataSource = dtable;
        }

        private void CargarDocentes()
        {
            DocenteManager DocenteManager = new DocenteManager();
            List<Docente> ListDocente = new List<Docente>();

            DataTable dtable = new DataTable();
            dtable.Columns.Add("id", typeof(int));
            dtable.Columns.Add("Nombre",typeof(string));

            ListDocente = DocenteManager.getDocenteAll();

            foreach(Docente docente in ListDocente)
            {
                DataRow drow = dtable.NewRow();
                drow["Nombre"] = docente.Nombre  + " " + docente.Apellido;
                drow["id"] =docente.DNIDocente;
                dtable.Rows.Add(drow);
            }
            
            cmbDocente.DisplayMember = "Nombre";
            cmbDocente.ValueMember = "id";
            cmbDocente.DataSource = dtable;
        }

        private void cmbMateria_SelectedIndexChanged(object sender, EventArgs e)
        {
            //traer los docentes que pueden dar esa materia
            DocenteManager DocenteManager = new DocenteManager();

            foreach(Materia materia in ListMateria)
            {
                ListDocente = DocenteManager.getDocentebyIdMateria((int)cmbMateria.SelectedValue);
            }

            DataTable dtable = new DataTable();
            dtable.Columns.Add("id", typeof(int));
            dtable.Columns.Add("Nombre", typeof(string));

            foreach (Docente docente in ListDocente)
            {
                DataRow drow = dtable.NewRow();
                drow["Nombre"] = docente.Nombre + " " + docente.Apellido;
                drow["id"] = docente.DNIDocente;
                dtable.Rows.Add(drow);
            }

            cmbDocente.DisplayMember = "Nombre";
            cmbDocente.ValueMember = "id";
            cmbDocente.DataSource = dtable;

            if (cmbDocente.Items.Count < 1)
            {
                MessageBox.Show("No existe ningun Docente que imparta la materia seleccionada, por favor primero asigne un Docente a la Materia.");
                this.Close();
            }
            
        }

        private void cmCurso_SelectedIndexChanged(object sender, EventArgs e)
        {
            //traer las materias permitidas para ese curso y mostrarlas
            MateriaManager MateriaManager = new MateriaManager();

            foreach (Curso curso in ListCurso)
            {
                ListMateria = MateriaManager.getMateriasByIdCurso((int)cmCurso.SelectedValue);
            }

            
            DataTable dtable = new DataTable();
            dtable.Columns.Add("id", typeof(int));
            dtable.Columns.Add("Nombre", typeof(string));

            foreach (Materia materia in ListMateria)
            {
                DataRow drow = dtable.NewRow();
                drow["Nombre"] = materia.Materia1;
                drow["id"] = materia.idMateria;
                dtable.Rows.Add(drow);
            }

            cmbMateria.DisplayMember = "Nombre";
            cmbMateria.ValueMember = "id";
            cmbMateria.DataSource = dtable;

            if (cmbMateria.Items.Count < 1)
                {
                    MessageBox.Show("El curso no posee Ninguna Materia Asignada, por favor primero Asigne Materias al Curso");
                    this.Close();
                    
                }
            
            }
        }
    }
